
02.10.2014, 14:29
|
Кандидат Javascript-наук
|
|
Регистрация: 19.05.2013
Сообщений: 144
|
|
Передача полученных данных
Здравствуйте, есть скрипт которые принимает данные и отправляет на мыло
Вот отрезок кода js
$("#signup")["bind"]("click",function ()
{
var a=$("#cInpName")["val"](),b=$("#cInpPhone")["val"](),c=$("#cInpStreet")["val"](),f=$("#cInpHouse")["val"](),d=$("#cInpFloat")["val"](),g=$("#cInpComments")["val"]();
if(1<b["length"])
{
var i=$(".basket_order .ajax_loader")["show"]();
$["ajax"]({type:"POST",url:"send.php",data:{name:a,phone:b,street:c,house:f,"float":d,comments:g,basket:Basket["content"]},success:function ()
{
yaCounter["reachGoal"]("metrika_order");
Basket.ShowBlock("message","Заказ отправлен","\x3Cp\x3EСпасибо за заказ!\x3C/p\x3E\x3Cp\x3EВ ближайшее время с вами свяжется оператор, для подтверждения заказа.\x3C/p\x3E",function ()
{
Basket.ShowBlock("basket");
return !1
}
);
Basket.Empty();
i["hide"]();
}
});
}
else
{
Basket.ShowBlock("message","Ошибка!","\x3Cp\x3EВы забыли указать номер мобильного телефона!\x3C/p\x3E",function ()
{
Basket.ShowBlock("order");
return !1
}
);
}
return !1
}
);
и так в send.php
правильно ли я указал в php переменные которые передаются?
например phone
отрезок кода:
$phone = ($_GET['phone']) ?$_GET['phone'] : $_POST['phone'];
но скрипт не отправляет я как понял не может найти send.php (он лежит в корне каталога, указывал в js и напрямую путь к send.php )
Собственно правильно ли я передаю переменные? И правильно ли я указал путь к send.php
|
|

02.10.2014, 15:01
|
 |
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
А че все обфусцировано?
$phone = isset($_REQUEST['phone']) : $_REQUEST['phone'] : '';
Надо так, но дело не в этом.
__________________
В личку только с интересными предложениями
|
|

02.10.2014, 17:17
|
Кандидат Javascript-наук
|
|
Регистрация: 19.05.2013
Сообщений: 144
|
|
Сообщение от danik.js
|
А че все обфусцировано?
$phone = isset($_REQUEST['phone']) : $_REQUEST['phone'] : '';
|
занимаюсь не хорошим делом исключительно в целях любопытства
Сообщение от danik.js
|
Надо так, но дело не в этом.
|
может намекнете какие могут быть проблемы
Последний раз редактировалось soltx, 02.10.2014 в 17:28.
|
|

02.10.2014, 17:44
|
 |
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Путь перепроверь. Если в корне, пиши /send.php
Открой консоль - смотри на предмет ошибок, смотри вкладку Network - в ней смотри по нужному ли url'у запрос уходит, нужные ли поля отправляются, возвращает ли сервак 200 ОК (вдруг отдает 500 Internal Error)
__________________
В личку только с интересными предложениями
|
|

02.10.2014, 18:14
|
Кандидат Javascript-наук
|
|
Регистрация: 19.05.2013
Сообщений: 144
|
|
все спасибо! не хватало / и еще один вопрос, как передать массив basket?
|
|

02.10.2014, 18:37
|
 |
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Попробуй ...comments:g,'basket[]':Basket["content"]...
То есть вместо basket нужно 'basket[]'. Так php поймет что это массив.
Basket["content"] - это точно массив?
__________________
В личку только с интересными предложениями
|
|

02.10.2014, 19:50
|
Кандидат Javascript-наук
|
|
Регистрация: 19.05.2013
Сообщений: 144
|
|
думаю да не ошибся что это массив
на почту приходит
<tr><td>Name</td><td>Василий</td></tr>
<tr><td>Phone</td><td>+7 (986) 776-86-78</td></tr>
<tr><td>Street</td><td>Пушкина</td></tr>
<tr><td>House</td><td>20</td></tr>
<tr><td>Comments</td><td>тест</td></tr>
<tr><td>Basket</td><td>Array</td></tr>
слегка сейчас изменен код js на
//Кнопка "заказать"
$('#signup').bind('click', function(){
var clName = $('#cInpName').val(),
clPhone = $('#cInpPhone').val(),
clStreet = $('#cInpStreet').val(),
clHouse = $('#cInpHouse').val(),
clFloat = $('#cInpFloat').val(),
clComments = $('#cInpComments').val();
if (clPhone.length > 1){
var ajax_loader = $('.basket_order .ajax_loader').show();
//Отправляем заказ
$.ajax({
type: "POST",
url: "ajax/sendorder.html",
data: {
name: clName,
phone: clPhone,
street: clStreet,
house: clHouse,
'float': clFloat,
comments: clComments,
basket: Basket.content
},
success: function(){
Basket.ShowBlock('message', 'Заказ отправлен', '<p>Спасибо за заказ!</p><p>В ближайшее время с вами свяжется оператор, для подтверждения заказа.</p>',
function(){
Basket.ShowBlock('basket');
return false;
});
Basket.Empty();
ajax_loader.hide();
}
});
}else{
Basket.ShowBlock('message', 'Ошибка!', '<p>Вы забыли указать номер мобильного телефона!</p>', function(){
Basket.ShowBlock('order');
return false;
});
}
return false;
});
добавляю в php basket[] перестает работать
если в js
'basket[]': Basket.content
получаю <tr><td>Basket</td><td>Array</td></tr>
Последний раз редактировалось soltx, 02.10.2014 в 20:02.
|
|

02.10.2014, 20:06
|
 |
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Походу в php не правильно выводишь. Небось echo $basket, да? Нельзя так массив вывести.
Можешь echo implode(',', $basket)
__________________
В личку только с интересными предложениями
|
|

02.10.2014, 20:31
|
Кандидат Javascript-наук
|
|
Регистрация: 19.05.2013
Сообщений: 144
|
|
)) да методом тыка не решить надо учиться
вот код который выводил в php
<?php
//Retrieve form data.
//GET - user submitted data using AJAX
//POST - in case user does not support javascript, we'll use POST instead
$name = ($_GET['name']) ? $_GET['name'] : $_POST['name'];
$phone = ($_GET['phone']) ?$_GET['phone'] : $_POST['phone'];
$street = ($_GET['street']) ? $_GET['street'] : $_POST['street'];
$house = ($_GET['house']) ?$_GET['house'] : $_POST['house'];
$comments = ($_GET['comments']) ? $_GET['comments'] : $_POST['comments'];
$basket = ($_GET['basket']) ?$_GET['basket'] : $_POST['basket'];
//flag to indicate which method it uses. If POST set it to 1
if ($_POST) $post=1;
//Simple server side validation for POST data, of course, you should validate the email
//if the errors array is empty, send the mail
if (!$errors) {
//recipient
$to = 'Your Name <example@example.com>';
//sender
$from = $name . ' <example@example.com>';
//subject and the html message
$subject = 'Заказ от ' . $name;
$message = '
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head></head>
<body>
<table>
<tr><td>Name</td><td>' . $name . '</td></tr>
<tr><td>Phone</td><td>' . $phone . '</td></tr>
<tr><td>Street</td><td>' . $street . '</td></tr>
<tr><td>House</td><td>' . $house . '</td></tr>
<tr><td>Comments</td><td>' . $comments . '</td></tr>
<tr><td>Basket</td><td>' . $basket . '</td></tr>
</table>
</body>
</html>';
//send the mail
$result = sendmail($to, $subject, $message, $from);
//if POST was used, display the message straight away
if ($_POST) {
if ($result) echo 'Thank you! We have received your message.';
else echo 'Sorry, unexpected error. Please try again later';
//else if GET was used, return the boolean value so that
//ajax script can react accordingly
//1 means success, 0 means failed
} else {
echo $result;
}
//if the errors array has values
} else {
//display the errors message
for ($i=0; $i<count($errors); $i++) echo $errors[$i] . '<br/>';
echo '<a href="/">Back</a>';
exit;
}
//Simple mail function with HTML header
function sendmail($to, $subject, $message, $from) {
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
$headers .= 'From: ' . $from . "\r\n";
$result = mail($to,$subject,$message,$headers);
if ($result) return 1;
else return 0;
}
?>
|
|

02.10.2014, 20:50
|
 |
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
$phone = ($_GET['phone']) ?$_GET['phone'] : $_POST['phone'];
Это и остальное надо писать как
$phone = isset($_REQUEST['phone']) ?$_REQUEST['phone'] : '';
request содержит и post и get
if ($result) return 1;
else return 0;
Это проще записать как return (int) $result
__________________
В личку только с интересными предложениями
|
|
|
|